package Thread;

public class ThreadDemo15 {
    //让t线程把计算结果放到result中
    private static long result = 0;
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(()->{
            Long tmp = 0L;
            for (long i = 1; i <= 25_0000_0000L ; i++) {
                 tmp += i;
            }
            result += tmp;
        });
        Thread thread1 = new Thread(()->{
            Long tmp = 0L;
            for (long i = 25_0000_0000L; i <= 50_0000_0000L ; i++) {
                tmp += i;
            }
            result += tmp;
        });
        thread1.start();
        thread.start();
        long begin = System.currentTimeMillis();
        //主要问题：不知道当前t线程要执行多久
//        Thread.sleep(1000);
        //如果不加join（）方法，那么此时打印什么是不确定的
        //因为线程执行顺序的不确定，可能是没计算的结果0，也可能是中间的结果，也可能是计算后的结果
        //使用join，就会严格按照线程结束作为等待的条件
        //什么时候t结束，main才执行，1ms t完成就等待1ms，10ms t完成就等待10ms
        thread.join();
        thread1.join();
        //等待t1、t2结束
        long end = System.currentTimeMillis();
        //此时算出的结果就是准确的结果了
        System.out.println("result："+result);
        System.out.println("time:"+(end-begin));
    }
}
